/*
 * @(#)ClassBuilderFactory.java 1.0 2009/12/01
 */
package stardust.core.java.compiler;


import stardust.core.log.Log;


/**
 * Java 编译器工厂类。
 * <p/>
 * @version 1.0, 2009/12/01
 * @author ChenChang
 */
public class ClassBuilderFactory
{

  /**
   * 日志记录器。
   */
  private static Log log = new Log(ClassBuilderFactory.class);

  /**
   * 根据不同的 JVM 环境返回不同的编译实现类。
   */
  public static AbstractClassBuilder createClassBuilder()
  {
    try
    {
      Class.forName("javax.tools.JavaCompiler");
      Class.forName("javax.tools.JavaFileManager");
      Class.forName("javax.tools.ToolProvider");

      log.debug("加载Java内联编译器。");
      return new InnerClassBuilder();
    }
    catch(ClassNotFoundException e)
    {
      log.debug("加载Javac编译器。");
      return new JavacClassBuilder();
    }
  }

}
